Fournisseur OAuth2

Gitea prend en charge le rôle de fournisseur OAuth2 pour permettre aux applications tierces d'accéder à ses ressources avec le consentement de l'utilisateur. Cette fonctionnalité est disponible depuis la version 1.8.0.

Points de terminaison

Point final

URL

Point de terminaison d'autorisation

/login/oauth/authorize

Access Token Endpoint

/login/oauth/access_token

Subventions OAuth2 prises en charge

Pour le moment, Gitea ne prend en charge que le standard Authorization Code Grant avec un support supplémentaire de l' extension Proof Key for Code Exchange (PKCE) .

Pour utiliser la concession de code d'autorisation en tant qu'application tierce, il est nécessaire d'enregistrer une nouvelle application via la section «Paramètres» ( /user/settings/applications) des paramètres.

Portées

Actuellement, Gitea ne prend pas en charge les étendues (voir # 4300 ) et toutes les applications tierces auront accès à toutes les ressources de l'utilisateur et de ses organisations.

Exemple

Remarque: cet exemple n'utilise pas PKCE.

  1. 1.Redirection vers l'utilisateur vers le point de terminaison d'autorisation afin d'obtenir son consentement pour accéder aux ressources:  

https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE

Le CLIENT_IDpeut être obtenu en enregistrant une application dans les paramètres. Le STATEest une chaîne aléatoire qui sera renvoyée à votre application après l'autorisation de l'utilisateur. Le stateparamètre est facultatif mais doit être utilisé pour empêcher les attaques CSRF.

Page d'autorisationPage d'autorisation
 

L'utilisateur sera maintenant invité à autoriser votre candidature. S'ils l'autorisent, l'utilisateur sera redirigé vers le REDIRECT_URL, par exemple:

https://[REDIRECT_URI]?code=RETURNED_CODE&state=STATE

  1. 2.En utilisant le fourni à codepartir de la redirection, vous pouvez demander une nouvelle application et un jeton d'actualisation. Les points de terminaison du jeton d'accès acceptent les requêtes POST avec application/jsonet application/x-www-form-urlencodedbody, par exemple:  

POST https://[YOUR-GITEA-URL]/login/oauth/access_token

{

        "client_id": "YOUR_CLIENT_ID",

        "client_secret": "YOUR_CLIENT_SECRET",

        "code": "RETURNED_CODE",

        "grant_type": "authorization_code",

        "redirect_uri": "REDIRECT_URI"

}

Réponse:

{  

"access_token":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJnbnQiOjIsInR0IjowLCJleHAiOjE1NTUxNzk5MTIsImlhdCI6MTU1NTE3NjMxMn0.0-iFsAwBtxuckA0sNZ6QpBQmywVPz129u75vOM7wPJecw5wqGyBkmstfJHAjEOqrAf_V5Z-1QYeCh_Cz4RiKug",  

"token_type":"bearer",  

"expires_in":3600,  

"refresh_token":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJnbnQiOjIsInR0IjoxLCJjbnQiOjEsImV4cCI6MTU1NzgwNDMxMiwiaWF0IjoxNTU1MTc2MzEyfQ.S_HZQBy4q9r5SEzNGNIoFClT43HPNDbUdHH-GYNYYdkRfft6XptJBkUQscZsGxOW975Yk6RbgtGvq1nkEcklOw"  

}

Le CLIENT_SECRETest le code secret unique généré pour cette application. Veuillez noter que le secret ne sera visible qu'après avoir créé / enregistré l'application avec Gitea et ne pourra pas être récupéré. Si vous perdez le secret, vous devez régénérer le secret via les paramètres de l'application.

Le REDIRECT_URIdans la access_tokendemande doit correspondre au REDIRECT_URIdans la authorizedemande.

  1. 3.Utilisez le access_tokenpour effectuer des requêtes API pour accéder aux ressources de l'utilisateur.